import axios from 'axios';
import router from '../router'


const service = axios.create({
    // process.env.NODE_ENV === 'development' 来判断是否开发环境
    baseURL: 'http://localhost:8080/',
    // withCredentials: true,
    timeout: 5000
});

// 封装请求拦截器，在每次发起http请求前，会执行以下代码
service.interceptors.request.use(
    config => {
        var thisUrl = config.url;
        var thisBaseUrl = config.baseURL;
        let noAutherArryApi = [
            '/login',
            '/getAllProductList',
            '/getProductArrayByType'
        ]
        let url = thisUrl.replace(thisBaseUrl, '');
        // index如果返回-1标识需要认证，否则不需要认证
        let index = noAutherArryApi.findIndex(item => {
                return item == url
            })
            // 判断是否是登录请求，此路径需不需要登陆验证
            // index == -1
            // 
        if (thisUrl.replace(thisBaseUrl, '') != '/doLogin') {
            // 从本地存储中取出token
            let authToken = window.localStorage.getItem("authToken");
            // 如果不是登录请求，则携带登录token
            if (authToken) {
                // 如果有token，在把token放到请求头中
                config.headers.authToken = authToken;
            } else {
                // 跳转到登录页面 (这里使用 router, 是因为路由文件引入到了此文件里)
                router.push('/login');
            }
        }
        return config;
    },
    error => {
        console.log(error);
        return Promise.reject();
    }
);

service.interceptors.response.use(
    response => {
        if (response.status === 200) {
            return response.data;
        } else {
            Promise.reject();
        }
    },
    error => {
        console.log(error);
        return Promise.reject();
    }
);

export default service;